package br.com.uniban.form;

import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

import br.com.uniban.dto.ProvaDTO;
import br.com.uniban.entity.Disciplina;
import br.com.uniban.entity.PalavrasChaves;
import br.com.uniban.entity.Prova;
import br.com.uniban.entity.ProvaQuestoesRespondidas;
import br.com.uniban.entity.ProvaRespondida;
import br.com.uniban.entity.QuestoesAvulsas;
import br.com.uniban.entity.Usuario;

public class ProvaForm extends ActionForm implements Serializable{

	private static final long serialVersionUID = -1365868708331560695L;
	
	private Map<Integer, Prova> listaProva;
	private List<ProvaRespondida> listaProvaResp;
	private List<QuestoesAvulsas> listaQuestoes;
	private List<ProvaQuestoesRespondidas> listaQuestoesResp;
	private List<Disciplina> listaDisciplina;
	private Prova prova;
	private QuestoesAvulsas questao;
	private ProvaRespondida provaResp;
	private ProvaDTO filtro;
	private SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
	private Integer qtd;
	
	public ProvaForm (){
		prova = new Prova();
		filtro = new ProvaDTO();
		prova.setDisciplina(new Disciplina());
		prova.setUsuario(new Usuario());
		questao = new QuestoesAvulsas();
		questao.setUsuario(new Usuario());
		questao.setDisciplina(new Disciplina());
	}
	
	public Map<Integer, Prova> getListaProva() {
		return listaProva;
	}
	public void setListaProva(Map<Integer, Prova> listaProva) {
		this.listaProva = listaProva;
	}
	public List<ProvaRespondida> getListaProvaResp() {
		return listaProvaResp;
	}
	public void setListaProvaResp(List<ProvaRespondida> listaProvaResp) {
		this.listaProvaResp = listaProvaResp;
	}
	public List<QuestoesAvulsas> getListaQuestoes() {
		return listaQuestoes;
	}
	public void setListaQuestoes(List<QuestoesAvulsas> listaQuestoes) {
		this.listaQuestoes = listaQuestoes;
	}
	public List<ProvaQuestoesRespondidas> getListaQuestoesResp() {
		return listaQuestoesResp;
	}
	public void setListaQuestoesResp(
			List<ProvaQuestoesRespondidas> listaQuestoesResp) {
		this.listaQuestoesResp = listaQuestoesResp;
	}
	public List<Disciplina> getListaDisciplina() {
		return listaDisciplina;
	}
	public void setListaDisciplina(List<Disciplina> listaDisciplina) {
		this.listaDisciplina = listaDisciplina;
	}

	public Prova getProva() {
		return prova;
	}
	public void setProva(Prova prova) {
		this.prova = prova;
	}
	public ProvaRespondida getProvaResp() {
		return provaResp;
	}
	public void setProvaResp(ProvaRespondida provaResp) {
		this.provaResp = provaResp;
	}
	
	public ProvaDTO getFiltro() {
		return filtro;
	}
	public void setFiltro(ProvaDTO filtro) {
		this.filtro = filtro;
	}
	
	public Integer getQtd() {
		return qtd;
	}

	public void setQtd(Integer qtd) {
		this.qtd = qtd;
	}

	public String getPublicacao() {
		String publicacao = "";
		if(prova.getPublicacao() != null)
			publicacao = df.format(prova.getPublicacao());
		return publicacao;
	}

	public void setPublicacao(String publicacao) {
		try {
			prova.setPublicacao(df.parse(publicacao));
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
	
	public QuestoesAvulsas getQuestao() {
		return questao;
	}

	public void setQuestao(QuestoesAvulsas questao) {
		this.questao = questao;
	}
	
	public String getPalavraChave() {
		String palavraChave = "";
		if(questao.getListaDePalavrasChaves()!= null)
			palavraChave = questao.getListaDePalavrasChaves().toString();
		return palavraChave;
	}

	public void setPalavraChave(String palavraChave) {
		
		if(palavraChave != null && palavraChave.trim().length() > 0){
		String array[] = palavraChave.split(",");
		List<PalavrasChaves> lista = new ArrayList<PalavrasChaves>();
		PalavrasChaves pChave;
		for (int i = 0; i < array.length; i++) {
			pChave = new PalavrasChaves(array[i]);
			lista.add(pChave);
		}
		questao.setListaDePalavrasChaves(lista);
		}
	}
	
	public void resetQuestao(){
		this.questao = new QuestoesAvulsas();
		this.questao.setDisciplina(new Disciplina());
	}
	
	public void resetProva(){
		this.prova.setNome("");
		this.prova.setDescricao("");
		this.prova.setNivel('0');
		this.prova.getDisciplina().setId((short) 0);
		this.prova.setFlAtiva(null);		
		this.qtd = 0;
	}
	
	@Override
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		this.setFiltro(new ProvaDTO());
	}
	
}
